home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 35 / Amiga Format AFCD35 (Issue 119, Jan 1999).iso / -in_the_mag- / reader_requests / fredobbutils / bbsrc / iff-booter1.0.s < prev    next >
Text File  |  1998-11-06  |  3KB  |  190 lines

  1. *** IFF-Booter 1.00 Bootblock
  2. * Bootblock qui charge & affiche une image IFF-ILBM
  3. * l'image ne doit pas dépasser 5 bitplanes (32 couleurs)
  4.  
  5. IFFDATA=$50000        ;adr des données IFF-ILBM
  6.  
  7. Start:
  8.     MOVEM.L    D0-A6,-(A7)
  9.     MOVE.L    4.W,A6
  10.     bra.s    .go
  11.  
  12.     move    #2,$001C(A1)        ;TD_READ
  13.     MOVE.L    #$A400,$0024(A1)    ;io_length
  14.     MOVE.L    #IFFDATA,$0028(A1)    ;io_data
  15.     MOVE.L    #$400,$002C(A1)        ;io_offset
  16.     JSR    -$01C8(A6)        ;DoIO()
  17.     move    #9,$001C(A1)        ;TD_MOTOR
  18.     CLR.L    $0024(A1)
  19.     JSR    -$01C8(A6)
  20. .go
  21.     LEA    intname(PC),A1
  22.     JSR    -408(A6)
  23.     MOVE.L    D0,$7D000
  24.     MOVE.L    $9c(a6),$7D004    ;execbase->gfxbase
  25.     lea    IFFDATA+12,A0
  26.     MOVE.L    A0,$7D008
  27.     MOVE.L    4(A0),D0
  28.     ADDA.L    D0,A0
  29.     ADDQ.L    #8,A0
  30.     MOVE.L    A0,$7D00C
  31. .search_BODY
  32.     MOVE.L    4(A0),D0
  33.     ADDA.L    D0,A0
  34.     ADDQ.L    #8,A0
  35.     MOVE.L    #'BODY',D1
  36.     CMP.L    (A0),D1
  37.     BNE.B    .search_BODY
  38.     MOVE.L    A0,$7D010
  39.     MOVE.L    $7D008,A2
  40.     MOVE.L    A2,A1
  41.     lea    $10(a1),A1
  42.     MOVEQ    #0,D0
  43.     MOVE.B    (A1),D0
  44.     CMP    #6,D0
  45.     BLT.B    .no6bpl
  46.     MOVEQ    #6,D0
  47. .no6bpl    LEA    NewScreen(PC),A0
  48.     MOVE.L    A0,A3
  49.     move    D0,8(A3)    ;ns_depth
  50.     subq    #1,D0
  51.     move    D0,$7D014
  52.     MOVE.L    A2,A1
  53.     MOVE.B    $0048(A1),$7D016
  54.     ADDQ.L    #8,A1
  55.     MOVEQ    #0,D0
  56.     move    (A1)+,D0
  57.     move    D0,4(A3)
  58.     MOVEQ    #0,D3
  59.     cmp    #640,D0
  60.     BLT.B    .lores
  61.     OR    #$8000,D3    ;ns_viewmodes
  62. .lores    move    D0,D1
  63.     AND    #7,D1
  64.     BEQ.B    .zero
  65.     OR    #8,D0
  66. .zero    lsr    #3,d0        ;d0=d0/8
  67.     move    D0,$7D018
  68.     MOVEQ    #0,D0
  69.     move    (A1),D0
  70.     move    D0,6(A3)
  71.     cmp    #400,D0
  72.     BLT.B    .nolace
  73.     OR    #4,D3
  74. .nolace    move    D3,$C(A3)
  75.     LEA    NewScreen(PC),A0
  76.     MOVE.L    $7D000,A6    ;intbase
  77.     JSR    -$00C6(A6)    ;OpenScreen()
  78.     MOVE.L    D0,$7D01A
  79.     MOVE.L    D0,A0
  80.     lea    $C0(a0),A0    ;bm_planes
  81.     lea    $7D01E,A1
  82.     move    $7D014,D0
  83. .getplanes
  84.     move    D0,D1
  85.     LSL.L    #2,D1
  86.     MOVE.L    (A0,D1.W),(A1,D1.W)
  87.     DBF    D0,.getplanes
  88.     MOVE.L    $7D00C,A0
  89.     ADDQ.L    #8,A0
  90.  
  91.     lea    $7D0C6,A1
  92.     MOVEQ    #32-1,D7    ;compteur nbre de couleurs
  93. .col
  94.     MOVEQ    #0,D0
  95.     MOVE.B    (A0)+,D0
  96.     ANDI.B    #$F0,D0
  97.     LSL    #4,D0
  98.     MOVE.B    (A0)+,D0
  99.     AND    #$0FF0,D0
  100.     MOVEQ    #0,D1
  101.     MOVE.B    (A0)+,D1
  102.     LSR.B    #4,D1
  103.     AND.B    #$0F,D1
  104.     OR.B    D1,D0
  105.     move    D0,(A1)+
  106.     DBF    D7,.col
  107.  
  108.     MOVE.L    $7D01A,A0
  109.     lea    $2C(a0),A0    ;sc_viewport
  110.     move.l    a0,-(sp)
  111.     lea    $7D146,A1    ;palette noire
  112.     MOVEQ    #32,D0        ;32 couleurs
  113.     MOVE.L    $7D004,A6    ;gfxbase
  114.     JSR    -$00C0(A6)    ;LoadRGB4()
  115.  
  116.     BSR.s    DisplayPic    ;affiche image
  117.  
  118.     move.l    (sp)+,a0
  119.     lea    $7D0C6,A1    ;palette de l'image
  120.     MOVEQ    #32,D0
  121.     MOVE.L    $7D004,A6
  122.     JSR    -$00C0(A6)    ;LoadRGB4()
  123. wait    BTST    #10,$dff016
  124.     BNE.B    wait
  125.     MOVE.L    $7D000,A6
  126.     MOVE.L    $7D01A,A0
  127.     JSR    -$0042(A6)
  128. ;    move    #$83F0,$00DFF096
  129.     MOVEM.L    (A7)+,D0-A6
  130.     RTS
  131. DisplayPic:
  132.     lea    $7D01E,A2
  133.     MOVE.L    $7D010,A0
  134.     ADDQ.L    #4,A0
  135.     MOVE.L    (A0)+,D7
  136.     MOVE.L    A0,A3
  137.     ADDA.L    D7,A3
  138.     move    $7D014,D2
  139.     addq    #1,D2
  140. LB_0214    CMPA.L    A3,D0
  141.     BGE.B    LB_028E
  142.     MOVEQ    #0,D3
  143. LB_021C    move    D3,D4
  144.     lsl    #2,d4        ;d4=d4*4
  145.     MOVE.L    (A2,D4.W),A5
  146.     BSR.B    LB_024A
  147.     MOVE.L    A5,(A2,D4.W)
  148.     addq    #1,D3
  149.     cmp    D2,D3
  150.     BLT.B    LB_021C
  151.     MOVE.L    $7D008,A5
  152.     AND.B    #1,$0011(A5)
  153.     BEQ.B    LB_0214
  154.     lea    $7D1CA,A5
  155.     BSR.B    LB_024A
  156.     BRA.B    LB_0214
  157. LB_024A    MOVE.L    D2,$80.W
  158.     move    $7D018,D2
  159. LB_0254    TST    D2
  160.     BEQ.B    LB_0288
  161.     MOVEQ    #0,D0
  162.     TST.W    $7D016
  163.     BNE.B    LB_026C
  164.     move    $7D018,D0
  165.     subq    #1,D0
  166.     BRA.B    LB_0270
  167. LB_026C    MOVE.B    (A0)+,D0
  168.     BMI.B    LB_027A
  169. LB_0270    MOVE.B    (A0)+,(A5)+
  170.     subq    #1,D2
  171.     DBF    D0,LB_0270
  172.     BRA.B    LB_0254
  173. LB_027A    NEG.B    D0
  174.     MOVE.B    (A0)+,D1
  175. LB_027E    MOVE.B    D1,(A5)+
  176.     subq    #1,D2
  177.     DBF    D0,LB_027E
  178.     BRA.B    LB_0254
  179. LB_0288    MOVE.L    $80.W,D2
  180. LB_028E    RTS
  181.  
  182. NewScreen:
  183.     dc.w    0,0,320,200
  184.     dc.w    5
  185.     dc.b    0,1
  186.     dc.w    0,$f
  187.     dc.l    0,0,0,0
  188.  
  189. intname:dc.b "intuition.library",0
  190.